\section{Feature Design}
\label{section:features}
Since we want our learning system to generalize across games, we must avoid including any game-specific state in our features. For example, explicitly encoding the position of Mario, along with the positions of game entities that we know can harm Mario, into our features would run counter to our goal of generality. However, we must encode the observable game state with sufficient fidelity to make accurate predictions.
On the other hand, we must carefully design features of sufficiently low dimensionality that our learning problems remain computationally tractable.

With these competing concerns in mind, we follow the approach of Bellemare \etal\cite{bellemare12arcade} and encode the game state using tile-coded features. This encoding allows us to efficiently encode the absolute and relative positions of objects within the game. See Figure~\ref{fig:schematic} for details.

Although the resulting feature vector is very high dimensional (over 100,000 for several games), it is very sparse (see Figure~\ref{fig:sparse}). Storing the feature vector sparsely allows our algorithm to remain computationally efficient despite the high dimensionality of our feature transform.
